﻿#!D:\Program Files (x86)\python-3.7.7-amd64\python.exe
# -*-coding:utf-8-*-
import io
import sys

sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
# 以上代码为浏览器需要的，缺少其中一项会出现500错误

import os

# cgi 处理模块
import cgi
import cgitb

"""
CGI(Common Gateway Interface),通用网关接口,运行在服务器上提供HTML页面接口的一段程序。

以下为 Apache 支持CGI 配置：
ScriptAlias /cgi-bin/ /var/www/cgi-bin/

<Directory "/var/www/cgi-bin">
   AllowOverride None
   Options +ExecCGI
   Order allow,deny
   Allow from all
</Directory>

AddHandler cgi-script .cgi .pl .py

创建CGI程序，文件位于/cgi-bin目录中

浏览器访问：http://localhost/cgi-bin/cgi_demo1.py

"""

"""
发送并告知浏览器显示的内容类型为"text/html",HTTP头格式为“字段名: 字段内容”
以下为常用HTTP头部信息：
Content-type:	    请求的与实体对应的MIME信息。例如: Content-type:text/html
Expires: Date	    响应过期的日期和时间
Location: URL	    用来重定向接收方到非请求URL的位置来完成请求或标识新的资源
Last-modified: Date	请求资源的最后修改时间
Content-length: N	请求的内容长度
Set-Cookie: String	设置Http Cookie
"""
print("Content-type:text/html")
print()  # 空行，告诉服务器结束头部

# 创建 FieldStorage 的实例化
form = cgi.FieldStorage()

# 获取请求参数
site_name = form.getvalue('name')
site_age = form.getvalue('age')

if form.getvalue('runoob'):  # 取checkbox参数
    isSelected = str(form.getvalue('runoob')).upper()
else:
    isSelected = 'OFF'

if form.getvalue('site'):
    site = form.getvalue('site')  # 取radio参数
else:
    site = "提交数据为空"

site = form.getvalue('site')  # 取radio参数
text_content = form.getvalue('textcontent')
dropdown = form.getvalue('dropdown')

print('<html>')
print('<head>')
print('<meta charset="utf-8">')
print('<title>Hello Word - 我的第一个 CGI 程序！</title>')
print('</head>')
print('<body>')
print('<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>')
print("<p>name = %s,age = %s</p>" % (site_name, site_age))
print("<p> isSelected = %s</p>" % isSelected)
print("<p> site = %s</p>" % site)
print("<p> text_content = %s</p>" % text_content)
print("<p> dropdown = %s</p>" % dropdown)
print("<b>获取环境变量</b><br>")
print("<ul>")
for key in os.environ.keys():
    print("<li><span style='color:green'>%30s </span> : %s </li>" % (key, os.environ[key]))
print("</ul>")
print('</body>')
print('</html>')
